package org.wak.action
{
	import org.wak.gui.events.GuiEvent;
	import org.wak.scene.events.SceneEvent;
	
	/**
	 * Interface of the adventure controller 
	 * 
	 */	
	public interface IActionController
	{
		
		/**
		 * Initialize method. 
		 * 
		 */		
		function Initialize():void
		
		/**
		 * Event received when the player clicks over a SceneItem.  
		 * @param event SceneEvent containing the event info.
		 * 
		 */		
		function OnSceneItemClick( event:SceneEvent ):void ;
		
		/**
		 * Event received when the player moves the mouse over a SceneItem.  
		 * @param event SceneEvent containing the event info.
		 * 
		 */
		function OnSceneItemMouseOver( event:SceneEvent ):void ;
		
		/**
		 * Event received when the player moves the mouse out of a SceneItem.  
		 * @param event SceneEvent containing the event info.
		 * 
		 */
		function OnSceneItemMouseOut( event:SceneEvent ):void ;
		
		/**
		 * Event received when the player clicks over an empty space on the scene.  
		 * @param event SceneEvent containing the event info.
		 * 
		 */
		function OnSceneSpaceClick( event:SceneEvent ):void ;
		
		/**
		 * Event received when the player enters into the scene  
		 * @param event SceneEvent containing the event info.
		 * 
		 */
		function OnEnterScene( event:SceneEvent ):void ;
		
		/**
		 * Event received when the player exists the scene  
		 * @param event SceneEvent containing the event info.
		 * 
		 */
		function OnExitScene( event:SceneEvent ):void ;
		
		/**
		 * Event received when an action is selected on the gui using a button or 
		 * any other way.
		 * @param event GuiEvent containing the event info.
		 * 
		 */		
		function OnActionSelected(event:GuiEvent ):void ;
		
		/**
		 * Event received when an inventory item is selected on the gui .
		 * @param event GuiEvent containing the event info.
		 * 
		 */	
		function OnInventoryItemSelected( event:GuiEvent ):void ;
		
		/**
		 * Event received when an inventory item is with mouse over.
		 * @param event GuiEvent containing the event info.
		 * 
		 */	
		function OnInventoryItemOver( event:GuiEvent ):void ;
		
		/**
		 * Event received when an inventory item is with mouse out.
		 * @param event GuiEvent containing the event info.
		 * 
		 */	
		function OnInventoryItemOut( event:GuiEvent ):void ;
		
		/**
		 * Called from a PuzzleController when the consecuence of certain 
		 * action ended its execution. 
		 * 
		 */		
		function EndOfAction():void ;
		
		
	}
}